﻿Public Partial Class Log
    Inherits CoreClass

    ' Gan gia tri cho bien MenuID de kiem tra quyen cua ng dung, gia tri nay lay trog DB va dc fix
    Dim chkMenu As Integer = getIDMenu(3)

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Try
            ' Luôn check quyền khi load trang
            chkPms((CInt(Session("GroupId").ToString())), chkMenu)
            If Not Page.IsPostBack Then
                If chkView = 1 Then
                    BindGrid()
                    loadAction()
                Else
                    'MsgBox(chkView & chkUpdate & chkDelete)
                    objAlert.ErrorBox(Page, "Bạn không có quyền truy xuất trang này. <br><br>Liên hệ với Admin để biết thêm chi tiết.")
                    'Response.Redirect("/Default.aspx")
                End If
            End If
        Catch ex As Exception
            Response.Redirect("/Inside/xLogin.aspx?redirect=" & Request.Url.PathAndQuery.Replace("?", "|"))
        End Try
    End Sub

#Region "Các sự kiện của grid và Button"

    ' Tìm Kiếm
    Private Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.Click
        ' Kiểm tra xem có quyền xem hay không
        If Not chkView = 1 Then
            objAlert.ErrorBox(Page, "Bạn không có quyền tìm kiếm. <br><br>Liên hệ với Admin để biết thêm chi tiết.")
            Exit Sub
        End If
        BindGrid()
    End Sub

    ' Load lại sau khi chuyển trang
    Private Sub gridMenu_PageIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles gridMenu.PageIndexChanged
        BindGrid()
    End Sub

    ' Load lại sau khi order 
    Private Sub gridMenu_Sorted(ByVal sender As Object, ByVal e As System.EventArgs) Handles gridMenu.Sorted
        BindGrid()
    End Sub

    ' Tạo các dòng khác màu khi data đc fill vào bảng
    Private Sub gridMenu_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gridMenu.RowCreated
        'Add CSS class on normal row.
        If e.Row.RowType = DataControlRowType.DataRow And e.Row.RowState = DataControlRowState.Normal Then
            e.Row.CssClass = "normal"
        End If

        'Add CSS class on alternate row.
        If e.Row.RowType = DataControlRowType.DataRow And e.Row.RowState = DataControlRowState.Alternate Then
            e.Row.CssClass = "alt"
        End If
    End Sub

    ' Button Xóa theo lựa chọn
    Private Sub btnDelete_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnDelete.Click
        If chkDelete = 1 Then
            Dim row As GridViewRow
            Try
                Dim listID = ""
                For Each row In gridMenu.Rows
                    Dim chkView As HtmlInputCheckBox
                    Dim lblId As Label = CType(row.FindControl("lbl_ID"), Label)

                    chkView = CType(row.FindControl("chkView"), HtmlInputCheckBox)
                    If chkView.Checked Then
                        listID &= lblId.Text & ","
                    End If
                Next
                'MsgBox(listID)
                If listID.Length < 1 Then
                    objAlert.ErrorBox(Page, "Bạn phải chọn ít nhất 1 Log để xóa.")
                    Exit Sub
                End If
                listID = Left(listID, listID.Length - 1)
                sql = "spi_LogDelete " & objFunction.FieldCheck(listID)
                objData.ExeNonQuery(sql)
                BindGrid()
            Catch ex As Exception
                If objConfig.Developer.Equals("1") Then
                    objAlert.ErrorBox(Page, "File: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.DeclaringType.Name & _
                                  " --- Function: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.Name & _
                                  " --- Mess: " & ex.Message.Replace("'", """"))
                Else
                    objAlert.ErrorBox(Page, "Lỗi kỹ thuật, hãy thông báo lại với Admin, xin cảm ơn.")
                End If
            End Try
        Else
            objAlert.ErrorBox(Page, "Bạn không có quyền sử dụng tính năng này, liên hệ với Admin để biết thêm chi tiết.")
        End If
    End Sub

    ' Button Xóa tất cả
    Private Sub btnDeleteAll_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnDeleteAll.Click
        If chkDelete = 1 Then
            Try
                sql = "spi_LogDeleteAll"
                objData.ExeNonQuery(sql)
                BindGrid()
            Catch ex As Exception
                If objConfig.Developer.Equals("1") Then
                    objAlert.ErrorBox(Page, "File: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.DeclaringType.Name & _
                                  " --- Function: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.Name & _
                                  " --- Mess: " & ex.Message.Replace("'", """"))
                Else
                    objAlert.ErrorBox(Page, "Lỗi kỹ thuật, hãy thông báo lại với Admin, xin cảm ơn.")
                End If
            End Try
        Else
            objAlert.ErrorBox(Page, "Bạn không có quyền sử dụng tính năng này, liên hệ với Admin để biết thêm chi tiết.")
        End If
    End Sub

#End Region


#Region "Các hàm tự viết"

    ' Lấy dự liệu đưa vào Grid View
    Private Sub BindGrid()
        sql = "select L.*, U.UserName, U.UserFullName from In_Log as L "
        sql &= " inner join In_Users as U on L.UserID = U.UserID"
        sql &= " where(1 = 1)"

        If cbxAction.SelectedValue > "-1" Then
            sql &= " and L.LogAction = " & cbxAction.SelectedValue
        End If

        If txtDateStart.Text <> "" Then
            Dim endD As Date
            If txtDateEnd.Text <> "" Then
                endD = Date.Parse(objFunction.formatDateVNtoGlobal(txtDateEnd.Text))
            Else
                endD = Date.Parse(objFunction.formatDateVNtoGlobal(txtDateStart.Text))
            End If
            endD = endD.AddDays(1)
            sql &= " and L.LogDate >= '" & objFunction.convertDateVNtoOther(txtDateStart.Text, "ymd") & "' and  L.LogDate < '" & endD.Year & "-" & endD.Month & "-" & endD.Day & "'"
        End If

        If txtUsername.Text <> "" Then
            sql &= " and U.UserName like '%" & txtUsername.Text & "%'"
        End If

        sql &= " order by L.LogDate DESC"
        Try
            dsSource.ConnectionString = ConnectionString
            dsSource.SelectCommand = sql
            gridMenu.DataBind()
            If gridMenu.Rows.Count = 0 Then
                objAlert.AlertBox(Page, "Không tìm thấy dữ liệu phù hợp với yêu cầu của bạn, hãy thử lại.")
            End If
        Catch ex As Exception
            If objConfig.Developer.Equals("1") Then
                objAlert.ErrorBox(Page, "File: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.DeclaringType.Name & _
                                  " --- Function: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.Name & _
                                  " --- Mess: " & ex.Message.Replace("'", """"))
            Else
                objAlert.ErrorBox(Page, "Lỗi kỹ thuật, hãy thông báo lại với Admin, xin cảm ơn.")
            End If
        End Try
    End Sub

    ' Load cac Action vao Drop down list
    Private Sub loadAction()
        cbxAction.Items.Insert(0, New ListItem("-- No Filter --", "-1"))
        cbxAction.Items.Insert(1, New ListItem("Xóa / Disable", "0"))
        cbxAction.Items.Insert(2, New ListItem("Thêm mới", "1"))
        cbxAction.Items.Insert(3, New ListItem("Cập nhật", "2"))
        cbxAction.Items.Insert(4, New ListItem("Thao tác khác", "3"))
    End Sub

    ' Ham hien thi ngay thang tren grid view
    Public Function formatTime(ByVal str As String) As String
        Dim tempDate As New Date
        tempDate = CDate(str)
        Dim strDateReturn = tempDate.Day & "-" & tempDate.Month & "-" & tempDate.Year
        Dim strTimeReturn = tempDate.Hour & ":" & tempDate.Minute & "  " & tempDate.Second
        Return strDateReturn & "<span style=""font-style:italic;font-size:11px;color: #808080"">(" & strTimeReturn & ")</span>"
    End Function
#End Region


    


    

End Class